This invention relates generally to the field of computer video display systems. More particularly, this invention relates to a computer video graphics system capable of displaying multiple overlapping windows on a priority ordered basis.
In computer video graphics systems, a monitor displays frames of information provided by a frame buffer many times a second. The subsystem of a video graphics system between the frame buffer and the monitor is called the video datapath. As the format and content of video data becomes increasingly complex, the capability of video displays increases. For example, providing the feature of windows in graphics systems increases the demand on and complexity of the video datapath. The complexity of the system is further increased where multiple overlapping windows are called for.
Modern graphics workstations require that multiple windows be present on the display screen at once. Different windows typically contain data from different sources, that may need to be displayed using different colormaps or with other differences in the pixel processing in the video datapath. Additionally, drawing operations to different windows must be clipped so as to not draw outside the window boundaries and not draw into overlapping windows of higher priority. In most graphics workstations, windows are constrained to be rectangular. However, due to overlaps, the visible portion of a window need not be rectangular.
The standard art in the workstation industry at present is for multiple windows to all use the same pixel processing in the video datapath, so that only one colormap is used at a time, and the entire display uses either full color or pseudocolor at the same time, if it is possible to select between them at all.
For clipping drawing operations to the frame buffer, the standard art is a purely software approach of breaking up each window into simple non-overlapping regions. Scanlines and rectangles are the usual shapes that are used. Individual drawing operations are then clipped against these shapes when drawing to an individual window.
Other known systems allow different windows to use different colormaps at the same time. This is provided by coding the window number into dedicated planes of frame buffer memory. The per-pixel window number is also used to clip drawing operations to the frame buffer, although with the disadvantage that each frame buffer write must be preceded by a read to check the window number. This is a costly approach, suitable only for high end workstations.
In other known workstations, a set of non-overlapping rectangles to select windows from different parts of the frame buffer are used. This allows the workstations to store windows in the frame buffer independent of where they are displayed on the screen. However, their data structure requires that software compute lists of non-overlapping regions for each window, and places a limit on the number of regions that can occur on a single scanline. Also, the total number of windows on the screen is limited to the number of windows that can be stored in the frame buffer without occlusion. In a heavily occluded multi-window display, this is a significant drawback.
Various products and graphics chips have allowed a single window, or a small number of non-overlapping windows, to be overlaid onto the screen background. For example, a known system uses a chip to allow a single window to be overlaid on top of the rest of the screen at an arbitrary position. Other known systems restrict the positions allowed for the overlapping windows.
It is desirable to provide an efficient way to specify regions on the display screen that are parts of different windows. The regions may be specified as a priority ordered list of overlapping rectangles or other shapes.
It is also desirable to provide an efficient means for distinguishing which pixels are part of each of a set of overlapping, rectangular windows. The windows may be specified as a priority ordered list of rectangles, so that each window is computed as being visible at those pixels that are inside its rectangle but outside the rectangles of all higher priority windows. The number of rectangles required is always equal to the number of rectangular windows, irrespective of the degree of overlap.
It is also desirable to allow multiple window regions to be specified on the display screen using an efficient representation. The amount of data required to represent the windows should depend only on the number of windows--not on the relative positions of or overlap between the windows.
It is also desirable to allow the window region containing each pixel on the screen to be computed at video refresh rates. This is necessary in order to support pixel processing in the video datapath that is different for different windows.
Examples of different processing that may be carried out for different windows in the video datapath include colormap selection, double buffer selection, and pixel datatype (e.g., full color or pseudocolor). Window containment can also be used to control clipping when drawing to the frame buffer.